using System;
using System.Collections.Generic;
using System.Text;
using csharp.rad.general;

namespace csharp.rad.tmp
{
	public class Empresa : common.DefaultClass, common.IClass
   {
      private Database bd;
      public Database.Result result = new Database.Result();
      //private String e_msgErro;
      private Int32 e_id_empresa;
      private string e_razao_social;
      private string e_nome_fantasia;
      private string e_insc_estadual;
      private string e_cnpj;
      private string e_logradouro;
      private string e_bairro;
      private string e_cidade;
      private string e_estado;
      private string e_cep;
      private string e_telefone;
      private string e_fax;
      private string e_email;

      public Empresa(Database bancoDeDados)
      {
         bd = bancoDeDados;
      }

      public Empresa()
      {
      	
      }
      
      public Int32 id_empresa
      {
         set { e_id_empresa = value; }
         get { return e_id_empresa; }
      }
      public string razao_social
      {
         set { e_razao_social = value; }
         get { return e_razao_social; }
      }
      public string nome_fantasia
      {
         set { e_nome_fantasia = value; }
         get { return e_nome_fantasia; }
      }
      public string insc_estadual
      {
         set { e_insc_estadual = value; }
         get { return e_insc_estadual; }
      }
      public string cnpj
      {
         set { e_cnpj = value; }
         get { return e_cnpj; }
      }
      public string logradouro
      {
         set { e_logradouro = value; }
         get { return e_logradouro; }
      }
      public string bairro
      {
         set { e_bairro = value; }
         get { return e_bairro; }
      }
      public string cidade
      {
         set { e_cidade = value; }
         get { return e_cidade; }
      }
      public string estado
      {
         set { e_estado = value; }
         get { return e_estado; }
      }
      public string cep
      {
         set { e_cep = value; }
         get { return e_cep; }
      }
      public string telefone
      {
         set { e_telefone = value; }
         get { return e_telefone; }
      }
      public string fax
      {
         set { e_fax = value; }
         get { return e_fax; }
      }
      public string email
      {
         set { e_email = value; }
         get { return e_email; }
      }

      public int gravar()
      {
         String _sql;

         _sql = "UPDATE empresa SET "
                + "razao_social= '" + e_razao_social
                + "', nome_fantasia= '" + e_nome_fantasia
                + "',insc_estadual= '" + e_insc_estadual
                + "',cnpj= '" + e_cnpj
                + "',logradouro= '" + e_logradouro
                + "',bairro= '" + e_bairro
                + "',cidade= '" + e_cidade
                + "',estado= '" + e_estado
                + "',cep= '" + e_cep
                + "',telefone= '" + e_telefone
                + "',fax= '" + e_fax
                + "',email= '" + e_email
             + "' WHERE id_empresa = 1";

         result = bd.ExecuteCommand(_sql, Database.doNotUseTransaction);
         if (result.Status == Database.Status.Failed)
         {
            _msg_erro = result.ErrorMessage;
            return 0;
         }
         return 1;
      }

      public int obter()
      {
         String tabela = "empresa";
         System.Data.DataSet dtsEmpresa = new System.Data.DataSet();
         string _sql = "SELECT * "
                     + "FROM empresa ";
         dtsEmpresa = bd.ExecuteQuery(_sql, tabela, out result);
         if (result.Status == Database.Status.Failed)
         {
            _msg_erro = result.ErrorMessage;
            return -1;
         }
         if (dtsEmpresa.Tables[tabela].Rows.Count == 0)
            return 0;

         System.Data.DataRow registro = dtsEmpresa.Tables[tabela].Rows[0];
         get(registro);

         return 1;
      }
      
		public void clear()
		{
			throw new NotImplementedException();
		}
     
		public override void get(System.Data.DataRow dr)
		{
			e_id_empresa   = Convert.ToInt32(dr["id_empresa"]);
         e_razao_social = Convert.ToString(dr["razao_social"]);
         e_nome_fantasia = Convert.ToString(dr["nome_fantasia"]);
         e_insc_estadual = Convert.ToString(dr["insc_estadual"]);
         e_cnpj = Convert.ToString(dr["cnpj"]);
         e_logradouro = Convert.ToString(dr["logradouro"]);
         e_bairro = Convert.ToString(dr["bairro"]);
         e_cidade = Convert.ToString(dr["cidade"]);
         e_estado = Convert.ToString(dr["estado"]);
         e_cep = Convert.ToString(dr["cep"]);
         e_telefone = Convert.ToString(dr["telefone"]);
         e_fax = Convert.ToString(dr["fax"]);
         e_email = Convert.ToString(dr["email"]);
		}
		
		public override void setGsql()
		{
			base.setGsql();
		}
		
   }

	public class Empresas : common.DefaultList, common.IList
	{
		//private List<Empresa> _items= new List<Empresa>();
		
		public Empresas()
		{
			gsql.table = "empresa";
		}
		
		
		public Empresa get(Int32 index)
		{
			return (Empresa)items[index];
		}
		
		public Empresa get()
		{
			return (Empresa)items[index];
		}		
		
		public bool fillList()
		{
			gsql.prepare();
			gsql.setValue("","*");
			
			return mountList();
		}
		
		private bool mountList()
		{
			Int32 tam;
			
			if (!gsql.execute())
				return false;
			
			tam = gsql.getRowCount();
			items.Clear();
			for (int i=0; i < tam; i++)
			{
				Empresa aux = new Empresa();
				aux.get(gsql.getRow(i));
				items.Add(aux);
			}
			return true;
		}
	}  
}
